package com.iflytek.cosmo.ocr.service;

import java.util.Map;

import com.iflytek.cosmo.ocr.model.dto.ChangePwdParam;
import com.iflytek.cosmo.ocr.model.dto.UapOutput;
import com.iflytek.cosmo.ocr.model.dto.UserAuthOutput;
import com.iflytek.cosmo.ocr.model.dto.UserOutput;

/**
 * @ClassName: UserInfoService  
 * @Description: 用户管理service接口  
 * @author yagu  
 * @date 2018年5月14日  
 *
 */
public interface UserInfoService {
	/**
	 * @Title: getUserInfoById
	 * @Description: 获取用户信息  
	 * @param  userId 用户ID
	 * @return User  用户信息
	 */
	UserOutput getUserInfoById(String userId);
	
	/**
	 * @Title: checkUser
	 * @Description: 用户检测
	 * @param  userName  用户名
	 * @param  pwd 密码
	 * @return Boolean  true/false 成功失败
	 */
	Boolean checkUser(String userName, String pwd);

	/**
	 * @Title: registerUser
	 * @Description: 注册用户
	 * @param  userName 用户名
	 * @param  pwd 密码
	 * @return Boolean  true/false 成功失败
	 */
	UapOutput<String> registerUser(String userName, String pwd);
	/**
	 * @Title: getUserInfoByName
	 * @Description: 获取用户信息
	 * @param  userName 用户名称或者mac地址
	 * @return User  用户信息
	 */
	UserOutput getUserInfoByName(String userName);

	/**
	 * @Title: checkAndGetUserInfo
	 * @Description: 登录并获取用户信息
	 * @param  userName 用户名
	 * @param  pwd 密码
	 * @return true/false + userInfo 成功失败 + 用户信息
	 */
	Map<String, Object> checkAndGetUserInfo(String userName, String pwd);

	/**
	 * 修改密码
	 * @param changePwdParam 修改密码信息
	 * @return UapOutput
	 */
	UapOutput changePwd(ChangePwdParam changePwdParam);

	/**
	 * 用户验证
	 * @param userName 用户登录名
	 * @return 用户信息以及权限列表
	 */
	UserAuthOutput userCheck(String userName);
}
